//#ifndef DECTECTOR_H
//#define DECTECTOR_H

//#include <stdio.h>

//#include <QImage>

//#include "foregroundextractor.h"

//#include "opencv2/objdetect/objdetect.hpp"
//#include "opencv2/imgproc/imgproc.hpp"
//#include "opencv2/video/video.hpp"
//#include "opencv2/opencv.hpp"
//#include "opencv2/photo/photo.hpp"
//#include "opencv2/opencv_modules.hpp"

//#include "opencv2qt.h"


//using namespace cv;
//using namespace std;


///*!
// * \brief The Detector class
// */
//class Detector
//{
//    Mat _frame;
//    Mat _oldframe;
//    VideoCapture _capture;
//    ForegroundExtractor* f;



//public:
//    Detector();
//    ~Detector();
//    QImage getFrame();

//    void colorGradient(const Mat& image, Mat& gradient) const;

//    void denoise(const Mat& input, Mat& output) const;

//    void toLab(const Mat& input, Mat& output) const;

//    void contrast(Mat &input, double alpha, int beta) const;
//    void halfContrast(Mat &input, float alpha, float beta, float offset) const;
//    void labGradient(Mat &value) const;
//    void rgbGradient(Mat &value) const;

//    /*!
//     * \brief sobel Applie [Sobel filter](http://en.wikipedia.org/wiki/Sobel_operator) to the *image*.
//     * \param value Input image
//     * \param sigma \f$\sigma\f$.
//     * \param threshold
//     */
//    void sobel(Mat &value, int sigma = 1, int threshold = 0) const;
//    void normalMap(Mat &value,double scale = 1.0) const;
//    void laplacian(Mat &value);


//private:

//    void traitement(Mat &value) const;
//    void colorTraitement(Mat &value) const;

//    static inline float a(float s){
//        static const float rate = 0.07;
//        static const float offset = 50.0;
//        return (M_PI_2 + atan(rate * (s- offset))) / M_PI;
//    }

//    static inline float alpha(float s1,float s2){
//        return sqrt(a(s1)*a(s2));
//    }

//    static inline float deltaH(float h1, float h2) {
//        //        if(h2-h1 > 90.0f)
//        //            h2 -= 90.0f;
//        //        if(h2-h1 < -90.0f)
//        //            h1 -= 90.0f;
//        //        return qMin(abs(h1-h2),90.0f) / 90.0f;
//        return qMin((h2-h1)/180.0,1-((h2-h1)/180.0));

//    }

//    static inline float deltaL(float l1, float l2) {
//        return (l2-l1)/255.0;
//    }

//    static inline float distance( Vec3b c1, Vec3b c2) {
//        float _alpha = alpha(c1[1],c2[1]);
//        return (_alpha * deltaH(c1[0],c2[0]) + (1-_alpha) * deltaL(c1[2],c2[2])) * 255.0;
//    }


//};

//#endif // DECTECTOR_H
